package com.bd.scm.dao.mapper.workCalendar;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.numberOfRuns.ZtBanCiDto;
import com.bd.scm.domain.dto.workCalendar.WorkCalendarDetailDto;
import com.bd.scm.domain.dto.workCalendar.WorkCalendarDto;
import com.bd.scm.domain.models.workCalendar.BdSysDimDate;
import com.bd.scm.domain.models.workCalendar.WorkCalendar;
import com.bd.scm.domain.models.workCalendar.WorkCalendarDetail;

import java.util.List;

/**工作日历Mapper
 * Created with IntelliJ IDEA.
 * User: _Cps
 * Date: 2020.07.08 15:39
 */
public interface WorkCalendarMapper {

//    /**
//     * 查询所有的工作日历
//     * @param page 分页信息
//     * @param workCalendarDto 查询条件
//     * @return
//     */
//    IPage<WorkCalendar> findWorkCalendarList(Page<WorkCalendar> page, WorkCalendarDto workCalendarDto);

    /**
     * 查询所有的工作日历
     * @param workCalendarDto
     * @return
     */
    List<WorkCalendar> findWorkCalendarList(WorkCalendarDto workCalendarDto);

    /**
     * 添加工作日历
     * @param workCalendarDto
     * @return
     */
    int insertWorkCalendar(WorkCalendarDto workCalendarDto);

    /**
     * 修改工作日历
     * @param workCalendarDto
     * @return
     */
    int updateWorkCalendar(WorkCalendarDto workCalendarDto);

    /**
     * 删除工作日历
     * @param workCalendarDto
     * @return
     */
    int deleteWorkCalendar(WorkCalendarDto workCalendarDto);

    /**
     * 删除工作日历详情
     */
    int deleteWorkCalendarDetail(WorkCalendarDto workCalendarDto);

    /**
     * 获取最大ID+1
     */
    int getMaxID();

    /**
     * 添加使用 查询某一年的日期
     * @param workCalendarDto yyyy
     * @return
     */
    List<BdSysDimDate> findBdSysDimDate(WorkCalendarDto workCalendarDto);

    /**
     * 是否存在该年
     * @param workCalendarDto
     * @return
     */
    Integer getBdKqWorkCalendar(WorkCalendarDto workCalendarDto);

    /**
     * 添加日历明细表
     * @param workCalendarDetail
     * @return
     */
    int insertBdKqWorkCalendarDetail(WorkCalendarDetail workCalendarDetail);

    /**
     * 需要修改的日历数据
     */
    List<WorkCalendarDetail> findBdKqWorkCalendarDetailList(WorkCalendarDto workCalendarDto);

    /**
     * 修改日历数据
     * @param workCalendarDetail
     * @return
     */
    int updateBdKqWorkCalendarDetail(WorkCalendarDetail workCalendarDetail);

    /**
     * 查询班次LIst
     * @return
     */
    List<ZtBanCiDto> findBanCiList(WorkCalendarDto workCalendarDto);

    /**
     * 判断工作日历是否被使用
     * @return
     */
    int getWorkCalendarCount(WorkCalendarDto workCalendarDto);

    /**
     * 日历详情查询某个月份的
     * @param workCalendarDetail  parentId 日历ID  workMonth 哪个月份
     * @return
     */
    List<JSONObject> getBdKqWorkCalendarDetailList(WorkCalendarDetail workCalendarDetail);

    /**
     * 设置工作 休息 节假日
     * @param workCalendarDetailDto
     * shiftId 班次ID
     * parentId 工作日历ID
     * dayType 类型(0休息日, 1工作日, 2节假日)
     * workDates 工作日期（xx,xx,xx）
     * @return
     */
    int updateSetDate(WorkCalendarDetailDto workCalendarDetailDto);

    /**
     * 获取要排班的人ID
     * @param workCalendarDetailDto
     * @return
     */
    List<String> findUserSerialList(WorkCalendarDetailDto workCalendarDetailDto);

    /**
     * 获取班次编号
     * @param workCalendarDetailDto
     * @return
     */
    String findZtBanciBh(WorkCalendarDetailDto workCalendarDetailDto);

    /**
     * 获取修改成为休息日数据
     * @param workCalendarDetailDto
     * @return
     */
    List<JSONObject> findWorkCalendar(WorkCalendarDetailDto workCalendarDetailDto);
}
